#ifndef COLOR_H_
#define COLOR_H_

#include <list>

class Color
{
public:
    Color();
    Color(unsigned int r, unsigned int g, unsigned int b, unsigned int a = 255);
    virtual ~Color();

    bool operator==(const Color& other) const;

    Color scale(double factor) const;
    unsigned int r;
    unsigned int g;
    unsigned int b;
    unsigned int a;

};

typedef std::list<Color> Colors;

class ColorGreen : public Color
{
public:
    ColorGreen();
};

class ColorRed : public Color
{
public:
    ColorRed();
};

class ColorBlue : public Color
{
public:
    ColorBlue();
};

class ColorPurple : public Color
{
public:
    ColorPurple();
};

class ColorBlack : public Color
{
public:
    ColorBlack();
};

class ColorYellow : public Color
{
public:
    ColorYellow();
};

#endif
